package com.agile.leetcode.floatdemo;

import java.math.BigDecimal;

/**
 * 浮点数的比较
 * @Author ChenZhangKun
 * @Date 2020/9/1 10:46
 */
public class FloatDemo {
    public static void main(String[] args) {
        float a=1f-0.9f;
        float b=0.90f-0.80f;
        System.out.println(a==b);
        Float aFloat = Float.valueOf(a);
        Float aFloat1 = Float.valueOf(b);
        System.out.println(aFloat.equals(aFloat1));
        BigDecimal bigDecimal=new BigDecimal("0.90");
        BigDecimal bigDecimal1=new BigDecimal("0.8");
        BigDecimal bigDecimal2=new BigDecimal("0.7");
        // 指定误差
        float diff=1e-6F;
        if (Math.abs(a-b)<diff){
            System.out.println(true);
        }
        // 使用bigDecimal来计算
        BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
        BigDecimal subtract1 = bigDecimal1.subtract(bigDecimal2);
        // 注意compareTo不会进行精度比较，equals则会比较精度
        System.out.println(subtract.compareTo(subtract1)==0);
        // false不会忽略精度
        System.out.println(subtract.equals(subtract1));
    }
}
